/**
 * TypeFilterProcessor 类 - 类型过滤处理器
 * 保留指定类型的元素
 */
public class TypeFilterProcessor<T, R> implements DataProcessor<T> {

    private Class<R> targetType;

    /**
     * 构造方法
     * 
     * @param targetType 目标类型
     */
    public TypeFilterProcessor(Class<R> targetType) {
        this.targetType = targetType;
    }

    /**
     * 处理数据容器，保留指定类型的元素
     * 使用 instanceof + Class.isInstance() 进行类型检查
     * 
     * @param input 输入的数据容器
     * @return 过滤后的新容器
     */
    @Override
    public DataContainer<T> process(DataContainer<T> input) {
        DataContainer<T> result = new DataContainer<>();

        for (int i = 0; i < input.size(); i++) {
            T element = input.get(i);
            // 使用 Class.isInstance() 进行类型检查
            if (targetType.isInstance(element)) {
                result.add(element);
            }
        }

        return result;
    }

    /**
     * 获取处理器名称
     * 必须包含学生姓名
     * 
     * @return 处理器名称
     */
    @Override
    public String getProcessorName() {
        return "王五的类型过滤处理器"; // 请替换为实际姓名
    }
}
